package cn.steel.mapper;

import cn.steel.domain.entity.Receipt;
import cn.steel.domain.vo.ReceiptVo;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.data.repository.query.Param;

import java.util.List;
/**
 * @author: zhaoyuhan
 * @date: 2025/4/28
 * @description: 收货信息接口定义
 */
@Mapper
public interface ReceiptMapper {
    // 插入收货信息
    int insert(Receipt receipt);
    // 更新收货信息
    int update(Receipt receipt);
    // 根据用户ID查询收货信息
    List<ReceiptVo> selectByUserId(Long userId);
    // 根据ID查询收货信息
    ReceiptVo selectById(Long id);
    //  根据用户ID和收货信息ID删除收货信息
    int clearDefault(@Param("userId") Long userId);
    //  根据用户ID和收货信息ID设置默认
    int setDefault(@Param("id") Long id, @Param("userId") Long userId);
    // 根据用户ID和收货信息ID删除收货信息
    int deleteByIdAndUserId(@Param("id") Long id, @Param("userId") Long userId);
    // 根据用户ID和收货信息ID查询收货信息
    int countSameAddress(@Param("userId") Long userId,
                         @Param("contactName") String contactName,
                         @Param("contactPhone") String contactPhone,
                         @Param("deliveryAddress") String deliveryAddress,
                         @Param("excludeId") Long excludeId);

    ReceiptVo getDefaultReceiptByUserId(Long userId);
}